home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 5
/
Amiga Tools 5.iso
/
grafik
/
3d & render tools
/
irit
/
man
/
man6
/
swpsclsrf.6
< prev
next >
Wrap
Text File
|
1996-07-16
|
4KB
|
81 lines
.TH SWPSCLSRF
6 "IRIT Version 6.0"
.SH NAME
SWPSCLSRF
SurfaceType SWPSCLSRF( CurveType CrossSection, CurveType Axis,
NumericType Scale | CurveType ScaleCrv,
CurveType FrameCrv | VectorType FrameVec
| ConstType OFF,
NumericType ScaleRefine )
Constructs a generalized cylinder surface. This function sweeps a specified
cross-section CrossSection along the provided Axis.
The cross-section may be scaled by a constant value Scale, or scaled
along the Axis parametric direction via a scaling curve ScaleCrv.
By default, when frame specification is OFF, the orientation
of the cross section is computed using the Axis curve tangent and
normal. However, unlike the Frenet frame, attempt is made to minimize
the normal change, as can happen along inflection points in Axis.
If a VectorType FrameVec is provided as a frame orientation setting,
it is used to fix the binormal direction to this value. In other words, the
orientation frame has a fixed binormal. If a CurveType FrameCrv is
specified as a frame orientation setting, this vector field curve is
evaluated at each placement of the cross-section to yield the needed binormal.
ScaleRefine is an integer value to define possible refinement of the
Axis to reflect the information in ScalingCrv. Value of zero will
force no refinement while value of n > 0 will insert n times the
number of control points in ScaleCrv into Axis, better emulating
the scaling requested.
The resulting sweep is only an approximation of the real sweep. The
scaling and axis placement will not be exact, in general.
Manual refinement (in addition to ScaleRefine) of the axis curve at
the proper location, where accuracy is important, should improve the accuracy
of the output. The parametric domains of ScaleCrv and FrameCrv do
not have to match the parametric domain of Axis, and their domains are
made compatible by this function.
Example:
Cross = arc( vector( -0.11, -0.1, 0.0 ),
vector( -0.1, -0.1, 0.0 ),
vector( -0.1, -0.11, 0.0 ) ) +
arc( vector( 0.1, -0.11, 0.0 ),
vector( 0.1, -0.1, 0.0 ),
vector( 0.11, -0.1, 0.0 ) ) +
arc( vector( 0.11, 0.1, 0.0 ),
vector( 0.1, 0.1, 0.0 ),
vector( 0.1, 0.11, 0.0 ) ) +
arc( vector( -0.1, 0.11, 0.0 ),
vector( -0.1, 0.1, 0.0 ),
vector( -0.11, 0.1, 0.0 ) ) +
ctlpt( E2, -0.11, -0.1 );
scaleCrv = cbspline( 3,
list( ctlpt( E2, 0.05, 1.0 ),
ctlpt( E2, 0.1, 0.0 ),
ctlpt( E2, 0.2, 2.0 ),
ctlpt( E2, 0.3, 0.0 ),
ctlpt( E2, 0.4, 2.0 ),
ctlpt( E2, 0.5, 0.0 ),
ctlpt( E2, 0.6, 2.0 ),
ctlpt( E2, 0.7, 0.0 ),
ctlpt( E2, 0.8, 2.0 ),
ctlpt( E2, 0.85, 1.0 ) ),
list( KV_OPEN ) );
Axis = circle( vector( 0, 0, 0 ), 1 );
Frame = circle( vector( 0, 0, 0 ), 1 )
* rotx( 90 ) * trans( vector( 1.5, 0.0, 0.0 ) );
Srf1 = SWPSCLSRF( Cross, Axis, scaleCrv, off, 0 );
Srf2 = SWPSCLSRF( Cross, Axis, scaleCrv, off, 2 );
Srf3 = SWPSCLSRF( Cross, Axis, 1.0, Frame, 0 );
constructs a rounded rectangle cross-section and sweeps it along a circle,
while scaling and orienting in several ways. The axis curve Axis is
automatically refined in Srf2 to better approximate the requested
scaling.
See also SWEEPSRF for sweep with no scale.